草庐IT

Swift 线程 : When to use DispatchQueue. main.async?

全部标签

javascript - node.js 强制只有一个线程执行代码

当我启动我的应用程序nodeapp.js时,正在运行的进程只有1个线程。无论它运行的时间越长,为该进程创建的线程就越多。问题是当我想像这样执行特定类型的代码时:vario=require('socket.io')(process.env.PORT);它失败了,因为信号是从多个线程发送的,因此代码没有成功执行。简单的测试,如果这样做:vario=require('socket.io')(9001);vario=require('socket.io')(9002);vario=require('socket.io')(9003);vario=require('socket.io')(900

javascript - 在 "Actions must be plain objects. Use custom middleware for async actions."中使用 Jest 模拟结果

我有几个Redux-Thunk风格的函数,可以在一个文件中分派(dispatch)其他操作。其中一个Action将另一个作为其逻辑的一部分进行分派(dispatch)。它看起来类似于:exportconstfunctionToMock=()=>async(dispatch)=>{awaitdispatch({type:'abasicaction'});};exportconstfunctionToTest=()=>async(dispatch)=>{dispatch(functionToMock());};在我实际遇到的情况下,这些函数都涉及更多,并且每个都分派(dispatch)多个

单独线程上的 Javascript 回调函数

Javascript是单线程的。那么回调函数及其包含函数是否在与主循环/事件循环相同的线程上执行?database.query("SELECT*FROMhugetable",function(rows){//anonymouscallbackfunctionvarresult=rows;console.log(result.length);});console.log("Iamgoingwithoutwaiting...");如果query()方法及其回调函数与事件循环在同一线程上执行,则会发生阻塞。如果不是,为什么Javascript被称为单线程?任何人都可以帮助验证javascri

javascript - 将 JavaScript 回调传递给在另一个线程中调用它的 FFI 函数是否安全?

我有一个C函数,它接受回调并在另一个线程上调用它:voidcall_in_new_thread(void(*callback)()){//spawnanewthreadandcall`callback`init...}我想通过Node-FFI从JavaScript调用这个函数,将一个JavaScript函数传递给它:varcallbackType='pointer'varlib=ffi.Library('mylib',{'call_in_new_thread':['void',[callbackType]],})varcallback=ffi.Callback('void',['voi

javascript - 服务人员 : async await in combination with waituntil is not working properly

在使用async/await语法时,我正在为serviceworker中的promises而苦苦挣扎。以下情况:我收到推送通知,想处理点击事件。如果我将“旧”语法与then和catch一起使用,我可以遍历客户端列表并对其执行一些操作。如果我对async/await使用我喜欢的方式,它不会做任何事情。self.addEventListener("notificationclick",event=>{//isworkingevent.waitUntil(self.clients.matchAll().then(clientList=>{console.log(clientList);}))

javascript - 将 async/await 与 babel 一起使用时 regeneratorRuntime is not defined 错误

我正在使用异步/等待代码,并且收到“regeneratorRuntime未定义错误”。我已经尝试了堆栈溢出的几种解决方案,但我无法使它们中的任何一种起作用。这是我的配置:webpack.config.js:module.exports={entry:['babel-polyfill','./client/libs/compileTemplate/entry.jsx','./client/libs/compileTemplate/loginEntry.jsx'],output:{path:'/dist',publicPath:'/assets',filename:'[name].js'}

javascript - ES7 async/await 概念问题

我正在迁移现有程序以使用async/await(通过Babel的bluebirdCoroutines)为了学习这种风格。我一直在看这个tutorial.我对以下行为有点困扰。此代码段按预期工作:letparts=[];leturlsP=urls.map((url,index)=>{returndlPart(url,index,tempDir);});for(leturlPofurlsP){//Parallel(yay!)parts.push(awaiturlP);}for(letpartofparts){//SequentialawaitappendFile(leFile,part);

javascript - 使用 async.each 获取对象键

我有一些JSON数据如下:{version:1,partitions:{'0':[1616133379],'1':[1616133378],'2':[1616133380]}}我正在使用async.each循环访问数据,如下所示:async.each(topicData.partitions,function(data,callback){console.log('/brokers/topics/'+topic+'/partitions/'+data+'/state');callback();},function(err){if(err){console.log(err);callba

javascript - 单线程 Javascript 中的 AJAX 实现

如果Javascript不是多线程的,如何使AJAX请求异步?实现浏览器是特定的吗? 最佳答案 浏览器执行模型基于“事件循环”的概念。只有一个线程服务事件(稍微过于简单化)。当事件发生时,处理程序将按顺序调用。Ajax只是一种引发特定事件的机制。设置HTTP请求是同步的,但只是设置它。浏览器通过在发生这种情况时触发事件来响应代表服务器返回数据的网络通信。现代浏览器稍微复杂一些,因为每个窗口都可能有自己的进程(或者一般来说,是其他一些系统级“线程”结构)。此外,新的“webworker”功能允许独立的类似线程的隔间同时运行。

javascript - 线程安全的数组删除

我知道可以从数组中拼接一个项目,或者用delete删除它。前一种方法可能会导致并发问题,例如如果一个线程正在遍历数组而另一个线程刚刚移动或拼接。如果在数组上使用forEach,则delete不会出现此问题,因为forEach会遍历数组中的空洞。但是,数组不能永远增长并且需要清除,可能会导致与拼接情况下相同的问题。听起来我需要锁定,但如果Javascript有任何功能,我会觉得很有趣。有什么想法吗? 最佳答案 关于您的确切问题:不,您不会遇到并发问题,因为JavaScript不是多线程的。即使您使用网络worker也不会有问题,因为没